//
// Created by Administrator on 2022/10/12.
//
//使用顺序存储结构实现线性表
#define MAXSIZE 20 /* 线性表的最大长度 */
#define OK 1
#define ERROR 0
typedef int ElementType; /* 线性表的元素类型 */
typedef struct
{
    ElementType Data[MAXSIZE]; /* 线性表存放数据的地方 */
    int length; /* 线性表的当前长度 */
}SqList;

//获取线性表中某一个元素,第i个元素
int getElem(SqList list,int i, ElementType *e){
    if(i<1||i>list.length){
        return ERROR;
    }
    *e = list.Data[i-1];
    return OK;
}

//向数组中插入一个元素
int insertElem(SqList *list,int i,ElementType insertElem){
    if(i<1||i>list->length+1||list->length>=MAXSIZE){
        return ERROR;
    }
    if (i<=list->length) { /* 插入的位置不在表尾 */
        for (int j = list->length - 1; j >= i - 1; j--) {
            list->Data[j + 1] = list->Data[j];
        }
    }
    list->Data[i-1] = insertElem;
    list->length++;
    return OK;
}
//删除数组中的一个元素并返回
int delElm(SqList* list,int i,ElementType* e){
    if(i<=0||i>list->length||list->length==0){
        return ERROR;
    }
    e=list->Data[i-1];
    if (i<list->length) { /* 删除的不是最后一个 */
        for (int j = i; j < list->length; ++j) {
            list->Data[j - 1] = list->Data[j];
        }
    }
    list->length--;
    return OK;
}